<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //值传递---基础类型赋值--值传递
        // --两个变量是没有关系
        var a = 1;
        //赋值--右边的值，存入左边变量中
        // 把a的值1 存入了 变量b中
        var b = a;//值传递（基础类型赋值）
        a = 2;
        console.log(b);//1


        // 地址传递（引用传递）--复杂类型 赋值
        // 两个变量共用了同一个内存--同一个是变量

        var obj = { name: 'zhangan' };
        var obj2 = obj;//地址传递
        // 变量obj的地址 保存了 obj2变量中
        obj.name = 'zhangsanfeng';
        console.log(obj2.name);//zhangsanfeng


        function box(age) {
            // age = 1
            age = 19;
            //age 
        }
        var n = 1;
        box(n);// age = n  参数传递  值传递
        console.log(n);//1


        var arr = [1, 2]
        function fn(temp) {
            temp[0] = 100;
        }
        fn(arr)//地址传递--  arr的地址给了 temp
        // temp 和arr 是同一个内存
        console.log(arr[0]);//100


        // 如果通过 函数参数 传入函数内部一个基础类型的值-- 内部不会影响外部的值
        // 如果通过 函数参数 传入函数内部一个复杂类型的值-- 内部会影响外部的值



    </script>

</body>

</html>